package cn.caplike.demo.repository.design.pattern.combined.annotation.definition;

import java.lang.annotation.*;

/**
 * 标识 <b>业务系统数据 -> 中间件</b> 的适配注解
 *
 * @author LiKe
 * @date 2019-11-03 12:20
 */
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@SuppressWarnings("unused")
public @interface ApiDataAdapter {

    /**
     * Description: 财务接口适配
     *
     * @return {@link Finance[]}
     * @author LiKe
     * @date 2019-11-03 13:09:32
     */
    Finance[] value();

    /**
     * Description: 标注 财务接口类型、字段名的 注解
     *
     * @author LiKe
     * @date 2019-11-03 12:53:29
     */
    @Target(ElementType.ANNOTATION_TYPE)
    @Retention(RetentionPolicy.RUNTIME)
    @interface Finance {

        /**
         * Description: 接口类型
         *
         * @return {@link FinanceType}
         * @author LiKe
         * @date 2019-11-03 13:04:28
         */
        FinanceType type();

        /**
         * Description: 接口版本
         *
         * @return {@link FinanceVersion}
         * @author LiKe
         * @date 2019-11-03 13:08:00
         */
        FinanceVersion version();

        /**
         * Description: 在当前接口类型和接口版本下, 对应的字段名
         *
         * @return java.lang.String
         * @author LiKe
         * @date 2019-11-03 13:08:39
         */
        String fieldName();
    }

}
